# Create a clipboard button on the rendered HTML page
source(here::here("clipboard.R")); clipboard
# Set seed for reproducibility
set.seed(1982)
# Set global options for all code chunks
knitr::opts_chunk$set(
# Disable messages printed by R code chunks
message = FALSE,
# Disable warnings printed by R code chunks
warning = FALSE,
# Show R code within code chunks in output
echo = TRUE,
# Include both R code and its results in output
include = TRUE,
# Evaluate R code chunks
eval = TRUE,
# Enable caching of R code chunks for faster rendering
cache = FALSE,
# Align figures in the center of the output
fig.align = "center",
# Enable retina display for high-resolution figures
retina = 2,
# Show errors in the output instead of stopping rendering
error = TRUE,
# Do not collapse code and output into a single block
collapse = FALSE
)
# Start the figure counter
fig_count <- 0
# Define the captioner function
captioner <- function(caption) {
fig_count <<- fig_count + 1
paste0("Figure ", fig_count, ": ", caption)
}
library(sf)
library(tmap)
library(mapview)
library(dplyr)
library(osmextract)
# set mapview options
mapviewOptions(basemaps = c("CartoDB.Positron",
"OpenStreetMap",
"Esri.WorldImagery",
"OpenTopoMap"))
source("jobbers/custom_bounding_box.R")
Introduction
Data was downloaded from geofabrik
and contains all OSM data for Ecuador up to date. We extract rivers and
roads within the area of interest. Go to this file
to see how that is done.
Area of interest
area_of_interest <- readRDS("clean_data/manabi_area_simple.RDS")
mapview(
area_of_interest,
zcol = "geometry", # attribute used for fill
alpha.regions = 0, # fill transparency
color = "black", # border color
alpha = 0.4, # border transparency
legend = FALSE # remove legend
)
Rivers
rivers <- readRDS("clean_data/rivers_in_aoi.RDS")
filtered_rivers <- dplyr::filter(rivers, waterway %in% c("river", "stream"))
mapview(
filtered_rivers, # attribute used for fill
zcol = "waterway",
legend = TRUE # remove legend
)
These are the categories of waterways available:
##
## canal dam ditch dock drain river stream weir yes
## 262 13 162 1 107 740 1831 4 2
Roads
roads <- readRDS("clean_data/roads_in_aoi.RDS")
major_roads <- c(
"motorway", "motorway_link",
"trunk", "trunk_link",
"primary", "primary_link",
"secondary", "secondary_link",
"tertiary", "tertiary_link"
)
filtered_roads <- dplyr::filter(roads, highway %in% major_roads)
mapview(
filtered_roads, # attribute used for fill
zcol = "highway",
legend = TRUE # remove legend
)
These are the categories of highways available:
##
## bridleway busway construction corridor cycleway
## 179 13 22 1 121
## escape footway living_street motorway motorway_link
## 1 2470 212 13 30
## path pedestrian primary primary_link raceway
## 7162 251 629 71 13
## residential rest_area road secondary secondary_link
## 27804 1 3 915 49
## service steps tertiary tertiary_link track
## 8660 151 2030 40 17895
## trunk trunk_link unclassified
## 741 131 10998
References
grateful::cite_packages(output = "paragraph", out.dir = ".")
We used R version 4.5.0 (R Core Team
2025) and the following R packages: here v. 1.0.1 (Müller 2020), htmltools v. 0.5.8.1 (Cheng et al. 2024), knitr v. 1.50 (Xie 2014, 2015, 2025), mapview v. 2.11.2 (Appelhans et al. 2023), osmextract v. 0.5.3
(Gilardi and Lovelace 2025), plotly v.
4.11.0 (Sievert 2020), renv v. 1.1.5 (Ushey and Wickham 2025), rmarkdown v. 2.29
(Xie, Allaire, and Grolemund 2018; Xie, Dervieux,
and Riederer 2020; Allaire et al. 2024), sf v. 1.0.21 (Pebesma 2018; Pebesma and Bivand 2023),
tidyverse v. 2.0.0 (Wickham et al. 2019),
tmap v. 4.1 (Tennekes 2018), xaringanExtra
v. 0.8.0 (Aden-Buie and Warkentin
2024).
Allaire, JJ, Yihui Xie, Christophe Dervieux, Jonathan McPherson, Javier
Luraschi, Kevin Ushey, Aron Atkins, et al. 2024.
rmarkdown: Dynamic Documents for r.
https://github.com/rstudio/rmarkdown.
Appelhans, Tim, Florian Detsch, Christoph Reudenbach, and Stefan
Woellauer. 2023.
mapview: Interactive
Viewing of Spatial Data in r.
https://github.com/r-spatial/mapview.
Müller, Kirill. 2020.
here: A Simpler
Way to Find Your Files.
https://doi.org/10.32614/CRAN.package.here.
Pebesma, Edzer. 2018.
“Simple Features for R:
Standardized Support for Spatial Vector Data.”
The R Journal 10 (1): 439–46.
https://doi.org/10.32614/RJ-2018-009.
Pebesma, Edzer, and Roger Bivand. 2023.
Spatial
Data Science: With applications in R.
Chapman and
Hall/CRC.
https://doi.org/10.1201/9780429459016.
R Core Team. 2025.
R: A Language and Environment for
Statistical Computing. Vienna, Austria: R Foundation for
Statistical Computing.
https://www.R-project.org/.
Sievert, Carson. 2020.
Interactive Web-Based Data Visualization with
r, Plotly, and Shiny. Chapman; Hall/CRC.
https://plotly-r.com.
Tennekes, Martijn. 2018.
“tmap:
Thematic Maps in R.” Journal of Statistical
Software 84 (6): 1–39.
https://doi.org/10.18637/jss.v084.i06.
Ushey, Kevin, and Hadley Wickham. 2025.
renv: Project Environments.
https://rstudio.github.io/renv/.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy
D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019.
“Welcome to the tidyverse.”
Journal of Open Source Software 4 (43): 1686.
https://doi.org/10.21105/joss.01686.
Xie, Yihui. 2014. “knitr: A
Comprehensive Tool for Reproducible Research in R.”
In Implementing Reproducible Computational Research, edited by
Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman;
Hall/CRC.
———. 2015.
Dynamic Documents with R and Knitr. 2nd
ed. Boca Raton, Florida: Chapman; Hall/CRC.
https://yihui.org/knitr/.
———. 2025.
knitr: A General-Purpose
Package for Dynamic Report Generation in R.
https://yihui.org/knitr/.
Xie, Yihui, J. J. Allaire, and Garrett Grolemund. 2018.
R Markdown:
The Definitive Guide. Boca Raton, Florida: Chapman; Hall/CRC.
https://bookdown.org/yihui/rmarkdown.
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 2020.
R
Markdown Cookbook. Boca Raton, Florida: Chapman; Hall/CRC.
https://bookdown.org/yihui/rmarkdown-cookbook.
LS0tCnRpdGxlOiAiUml2ZXJzIGFuZCBSb2FkcyBmcm9tIE9wZW5TdHJlZXRNYXAiCmRhdGU6ICJMYXN0IG1vZGlmaWVkOiBgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkLSVtLSVZLicpYCIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBtYXRoamF4OiAiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9tYXRoamF4QDMvZXM1L3RleC1tbWwtY2h0bWwuanMiCiAgICBoaWdobGlnaHQ6IHB5Z21lbnRzCiAgICB0aGVtZTogZmxhdGx5CiAgICBjb2RlX2ZvbGRpbmc6IHNob3cgIyBjbGFzcy5zb3VyY2UgPSAiZm9sZC1oaWRlIiB0byBoaWRlIGNvZGUgYW5kIGFkZCBhIGJ1dHRvbiB0byBzaG93IGl0CiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OgogICAgICBjb2xsYXBzZWQ6IHRydWUKICAgICAgc21vb3RoX3Njcm9sbDogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBmaWdfY2FwdGlvbjogdHJ1ZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgY3NzOiB2aXN1YWwuY3NzCmFsd2F5c19hbGxvd19odG1sOiB0cnVlCmJpYmxpb2dyYXBoeTogCiAgLSByZWZlcmVuY2VzLmJpYgogIC0gZ3JhdGVmdWwtcmVmcy5iaWIKLS0tCgpgYGB7cn0KIyBDcmVhdGUgYSBjbGlwYm9hcmQgYnV0dG9uIG9uIHRoZSByZW5kZXJlZCBIVE1MIHBhZ2UKc291cmNlKGhlcmU6OmhlcmUoImNsaXBib2FyZC5SIikpOyBjbGlwYm9hcmQKIyBTZXQgc2VlZCBmb3IgcmVwcm9kdWNpYmlsaXR5CnNldC5zZWVkKDE5ODIpIAojIFNldCBnbG9iYWwgb3B0aW9ucyBmb3IgYWxsIGNvZGUgY2h1bmtzCmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICAjIERpc2FibGUgbWVzc2FnZXMgcHJpbnRlZCBieSBSIGNvZGUgY2h1bmtzCiAgbWVzc2FnZSA9IEZBTFNFLCAgICAKICAjIERpc2FibGUgd2FybmluZ3MgcHJpbnRlZCBieSBSIGNvZGUgY2h1bmtzCiAgd2FybmluZyA9IEZBTFNFLCAgICAKICAjIFNob3cgUiBjb2RlIHdpdGhpbiBjb2RlIGNodW5rcyBpbiBvdXRwdXQKICBlY2hvID0gVFJVRSwgICAgICAgIAogICMgSW5jbHVkZSBib3RoIFIgY29kZSBhbmQgaXRzIHJlc3VsdHMgaW4gb3V0cHV0CiAgaW5jbHVkZSA9IFRSVUUsICAgICAKICAjIEV2YWx1YXRlIFIgY29kZSBjaHVua3MKICBldmFsID0gVFJVRSwgICAgICAgCiAgIyBFbmFibGUgY2FjaGluZyBvZiBSIGNvZGUgY2h1bmtzIGZvciBmYXN0ZXIgcmVuZGVyaW5nCiAgY2FjaGUgPSBGQUxTRSwgICAgICAKICAjIEFsaWduIGZpZ3VyZXMgaW4gdGhlIGNlbnRlciBvZiB0aGUgb3V0cHV0CiAgZmlnLmFsaWduID0gImNlbnRlciIsCiAgIyBFbmFibGUgcmV0aW5hIGRpc3BsYXkgZm9yIGhpZ2gtcmVzb2x1dGlvbiBmaWd1cmVzCiAgcmV0aW5hID0gMiwKICAjIFNob3cgZXJyb3JzIGluIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiBzdG9wcGluZyByZW5kZXJpbmcKICBlcnJvciA9IFRSVUUsCiAgIyBEbyBub3QgY29sbGFwc2UgY29kZSBhbmQgb3V0cHV0IGludG8gYSBzaW5nbGUgYmxvY2sKICBjb2xsYXBzZSA9IEZBTFNFCikKIyBTdGFydCB0aGUgZmlndXJlIGNvdW50ZXIKZmlnX2NvdW50IDwtIDAKIyBEZWZpbmUgdGhlIGNhcHRpb25lciBmdW5jdGlvbgpjYXB0aW9uZXIgPC0gZnVuY3Rpb24oY2FwdGlvbikgewogIGZpZ19jb3VudCA8PC0gZmlnX2NvdW50ICsgMQogIHBhc3RlMCgiRmlndXJlICIsIGZpZ19jb3VudCwgIjogIiwgY2FwdGlvbikKfQpgYGAKCgpgYGB7cn0KbGlicmFyeShzZikKbGlicmFyeSh0bWFwKQpsaWJyYXJ5KG1hcHZpZXcpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkob3NtZXh0cmFjdCkKIyBzZXQgbWFwdmlldyBvcHRpb25zCm1hcHZpZXdPcHRpb25zKGJhc2VtYXBzID0gYygiQ2FydG9EQi5Qb3NpdHJvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlblN0cmVldE1hcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXNyaS5Xb3JsZEltYWdlcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5Ub3BvTWFwIikpCgpzb3VyY2UoImpvYmJlcnMvY3VzdG9tX2JvdW5kaW5nX2JveC5SIikKYGBgCgojIEludHJvZHVjdGlvbgoKCkRhdGEgd2FzIGRvd25sb2FkZWQgZnJvbSBbZ2VvZmFicmlrXShodHRwczovL2Rvd25sb2FkLmdlb2ZhYnJpay5kZS9zb3V0aC1hbWVyaWNhL2VjdWFkb3IuaHRtbCkgYW5kIGNvbnRhaW5zIGFsbCBPU00gZGF0YSBmb3IgRWN1YWRvciB1cCB0byBkYXRlLiBXZSBleHRyYWN0IHJpdmVycyBhbmQgcm9hZHMgd2l0aGluIHRoZSBhcmVhIG9mIGludGVyZXN0LiBHbyB0byB0aGlzIFtmaWxlXShodHRwczovL2dpdGh1Yi5jb20vbGVuaW5yYWZhZWxyaWVyYXNlZ3VyYS9tYW5hYmkvYmxvYi9tYWluL2pvYmJlcnMvd2F5cy5SKSAgdG8gc2VlIGhvdyB0aGF0IGlzIGRvbmUuCgojIyBBcmVhICBvZiBpbnRlcmVzdAoKCmBgYHtyfQphcmVhX29mX2ludGVyZXN0IDwtIHJlYWRSRFMoImNsZWFuX2RhdGEvbWFuYWJpX2FyZWFfc2ltcGxlLlJEUyIpCm1hcHZpZXcoCiAgYXJlYV9vZl9pbnRlcmVzdCwKICB6Y29sID0gImdlb21ldHJ5IiwgICAgICAgICMgYXR0cmlidXRlIHVzZWQgZm9yIGZpbGwKICBhbHBoYS5yZWdpb25zID0gMCwgICAgIyBmaWxsIHRyYW5zcGFyZW5jeQogIGNvbG9yID0gImJsYWNrIiwgICAgICAgICMgYm9yZGVyIGNvbG9yCiAgYWxwaGEgPSAwLjQsICAgICAgICAgICAgIyBib3JkZXIgdHJhbnNwYXJlbmN5CiAgbGVnZW5kID0gRkFMU0UgICAgICAgICAgICMgcmVtb3ZlIGxlZ2VuZAopCmBgYAoKCgojIFJpdmVycwoKCmBgYHtyfQpyaXZlcnMgPC0gcmVhZFJEUygiY2xlYW5fZGF0YS9yaXZlcnNfaW5fYW9pLlJEUyIpCmZpbHRlcmVkX3JpdmVycyA8LSBkcGx5cjo6ZmlsdGVyKHJpdmVycywgd2F0ZXJ3YXkgJWluJSBjKCJyaXZlciIsICJzdHJlYW0iKSkKbWFwdmlldygKICBmaWx0ZXJlZF9yaXZlcnMsICAgICAgICMgYXR0cmlidXRlIHVzZWQgZm9yIGZpbGwKICB6Y29sID0gIndhdGVyd2F5IiwKICBsZWdlbmQgPSBUUlVFICAgICAgICAgICAjIHJlbW92ZSBsZWdlbmQKKQpgYGAKClRoZXNlIGFyZSB0aGUgY2F0ZWdvcmllcyBvZiB3YXRlcndheXMgYXZhaWxhYmxlOgoKYGBge3J9CnRhYmxlKHJpdmVycyR3YXRlcndheSkKYGBgCgoKIyBSb2FkcwoKYGBge3J9CnJvYWRzIDwtIHJlYWRSRFMoImNsZWFuX2RhdGEvcm9hZHNfaW5fYW9pLlJEUyIpCm1ham9yX3JvYWRzIDwtIGMoCiAgIm1vdG9yd2F5IiwgIm1vdG9yd2F5X2xpbmsiLAogICJ0cnVuayIsICJ0cnVua19saW5rIiwKICAicHJpbWFyeSIsICJwcmltYXJ5X2xpbmsiLAogICJzZWNvbmRhcnkiLCAic2Vjb25kYXJ5X2xpbmsiLAogICJ0ZXJ0aWFyeSIsICJ0ZXJ0aWFyeV9saW5rIgopCmZpbHRlcmVkX3JvYWRzIDwtIGRwbHlyOjpmaWx0ZXIocm9hZHMsIGhpZ2h3YXkgJWluJSBtYWpvcl9yb2FkcykKbWFwdmlldygKICBmaWx0ZXJlZF9yb2FkcywgICAgICAgIyBhdHRyaWJ1dGUgdXNlZCBmb3IgZmlsbAogIHpjb2wgPSAiaGlnaHdheSIsCiAgbGVnZW5kID0gVFJVRSAgICAgICAgICAgIyByZW1vdmUgbGVnZW5kCikKYGBgCgoKVGhlc2UgYXJlIHRoZSBjYXRlZ29yaWVzIG9mIGhpZ2h3YXlzIGF2YWlsYWJsZToKCmBgYHtyfQp0YWJsZShyb2FkcyRoaWdod2F5KQpgYGAKCiMgUmVmZXJlbmNlcyAKCmBgYHtyfQpncmF0ZWZ1bDo6Y2l0ZV9wYWNrYWdlcyhvdXRwdXQgPSAicGFyYWdyYXBoIiwgb3V0LmRpciA9ICIuIikKYGBgCgoKCg==